<html>
<head><meta charset="utf-8"><title>change Rust::Scalar ABI to pass Floats by memory · t-compiler · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/index.html">t-compiler</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html">change Rust::Scalar ABI to pass Floats by memory</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="175894945"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175894945" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175894945">(Sep 17 2019 at 10:58)</a>:</h4>
<p><span class="user-mention" data-user-id="119009">@eddyb</span> I'm not sure which code needs modifying to achieve that</p>



<a name="175894962"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175894962" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175894962">(Sep 17 2019 at 10:59)</a>:</h4>
<p>but that would be a quick fix for a couple of soundness bugs</p>



<a name="175905944"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175905944" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175905944">(Sep 17 2019 at 13:31)</a>:</h4>
<p>WOW</p>



<a name="175906004"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906004" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906004">(Sep 17 2019 at 13:32)</a>:</h4>
<p>you can look at how this is done for vectors</p>



<a name="175906246"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906246" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Hanna Kruppe <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906246">(Sep 17 2019 at 13:34)</a>:</h4>
<p>Ugh, please no</p>



<a name="175906350"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906350" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906350">(Sep 17 2019 at 13:35)</a>:</h4>
<p><span class="user-mention" data-user-id="132920">@gnzlbg</span> <a href="https://github.com/rust-lang/rust/blob/master/src/librustc/ty/layout.rs#L2819-L2844" target="_blank" title="https://github.com/rust-lang/rust/blob/master/src/librustc/ty/layout.rs#L2819-L2844">https://github.com/rust-lang/rust/blob/master/src/librustc/ty/layout.rs#L2819-L2844</a></p>



<a name="175906360"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906360" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906360">(Sep 17 2019 at 13:35)</a>:</h4>
<p>knock yourself out :P</p>



<a name="175906413"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906413" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906413">(Sep 17 2019 at 13:36)</a>:</h4>
<p>(note that you need to do also do it for ScalarPair where <em>at least one</em> of the scalars is a float)</p>



<a name="175906416"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906416" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Hanna Kruppe <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906416">(Sep 17 2019 at 13:36)</a>:</h4>
<p>Vector values are usually concentrated in big fully-inlined hot loops so passing them through memory is not a huge problem, but passing scalar floats by value can easily be a part of hot (scalar) code.</p>



<a name="175906456"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906456" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906456">(Sep 17 2019 at 13:36)</a>:</h4>
<p><span class="user-mention" data-user-id="124289">@rkruppe</span> at this point I'm worried to even ask or debate it, lol</p>



<a name="175906474"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906474" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906474">(Sep 17 2019 at 13:36)</a>:</h4>
<p>So one can just add a match arm there for Abi::Scalar(Float..) and make the argument indirect ?</p>



<a name="175906479"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906479" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906479">(Sep 17 2019 at 13:37)</a>:</h4>
<p>we can do that on a PR or w/e</p>



<a name="175906491"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906491" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906491">(Sep 17 2019 at 13:37)</a>:</h4>
<p>suuuure</p>



<a name="175906498"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906498" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906498">(Sep 17 2019 at 13:37)</a>:</h4>
<p>no promises it won't break in strange ways</p>



<a name="175906507"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906507" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906507">(Sep 17 2019 at 13:37)</a>:</h4>
<p>sure</p>



<a name="175906514"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906514" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Hanna Kruppe <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906514">(Sep 17 2019 at 13:37)</a>:</h4>
<p>And the issue this would paper over only occurs a very weird scenario (+soft-float or -sse applied inconsistently) which we've never supposed and which has other serious problems as well</p>



<a name="175906622"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906622" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906622">(Sep 17 2019 at 13:38)</a>:</h4>
<p>It wouldn't fix, e.g., <code>extern "C"</code> functions</p>



<a name="175906633"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906633" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> eddyb <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906633">(Sep 17 2019 at 13:38)</a>:</h4>
<p>(also, this doesn't change anything about C, so what you'll likely cause is people abusing <code>extern "C" fn</code>s in Rust to get perf back or something)</p>



<a name="175906644"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906644" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906644">(Sep 17 2019 at 13:38)</a>:</h4>
<p>if libstd standard exposed one, the ABI would still mismatch a declaration in a crate</p>



<a name="175906670"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906670" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906670">(Sep 17 2019 at 13:39)</a>:</h4>
<p>this would only ""fix"" the issue for extern "Rust"</p>



<a name="175906685"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906685" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906685">(Sep 17 2019 at 13:39)</a>:</h4>
<p>maybe</p>



<a name="175906701"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906701" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906701">(Sep 17 2019 at 13:39)</a>:</h4>
<p>That will depend on what the impact is</p>



<a name="175906730"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906730" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Hanna Kruppe <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906730">(Sep 17 2019 at 13:39)</a>:</h4>
<p>More importantly it wouldn't fix the fact that you're getting a libstd compiled with sse/hardfloat enabled, so anyone trying to get kernel-compatible code without recompiling the sysroot is doing it wrong to begin with</p>



<a name="175906856"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906856" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906856">(Sep 17 2019 at 13:40)</a>:</h4>
<p>yep, but people doing that already need to re-compile everything</p>



<a name="175906879"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906879" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Hanna Kruppe <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906879">(Sep 17 2019 at 13:40)</a>:</h4>
<p>What is the use case for -Ctarget-feature=+soft-float that <em>doesn't</em> require that?</p>



<a name="175906926"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906926" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906926">(Sep 17 2019 at 13:41)</a>:</h4>
<p>I suppose we can just forbid that target feature for some targets</p>



<a name="175906932"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906932" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Hanna Kruppe <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906932">(Sep 17 2019 at 13:41)</a>:</h4>
<p>???</p>



<a name="175906936"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906936" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906936">(Sep 17 2019 at 13:41)</a>:</h4>
<p>and those who want it would have to create their own new targets</p>



<a name="175906947"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906947" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Hanna Kruppe <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906947">(Sep 17 2019 at 13:41)</a>:</h4>
<p>Oh, maybe, I guess</p>



<a name="175906962"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175906962" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175906962">(Sep 17 2019 at 13:41)</a>:</h4>
<p>As in, it would be part of the target specification file or similar</p>



<a name="175907033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Hanna Kruppe <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907033">(Sep 17 2019 at 13:42)</a>:</h4>
<p>But Xargo with an ordinary in-tree target + <code>-Ctarget-feature</code> works fine</p>



<a name="175907037"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907037" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907037">(Sep 17 2019 at 13:42)</a>:</h4>
<p>for soft-float I don't know, but somebody might think that <code>-C target-feature=-sse</code> forces all code to use the FPU</p>



<a name="175907054"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907054" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907054">(Sep 17 2019 at 13:42)</a>:</h4>
<p>and they might want to try to hack their way to get higher precision or something</p>



<a name="175907070"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907070" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Hanna Kruppe <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907070">(Sep 17 2019 at 13:42)</a>:</h4>
<p>Ok, correction, what is a <em>good</em> use case?</p>



<a name="175907071"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907071" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907071">(Sep 17 2019 at 13:42)</a>:</h4>
<p>that won't do what they want</p>



<a name="175907085"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907085" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907085">(Sep 17 2019 at 13:43)</a>:</h4>
<p>but it wouldn't be broken either</p>



<a name="175907098"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907098" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907098">(Sep 17 2019 at 13:43)</a>:</h4>
<p>I think a good use-case would be thumb mode on arm</p>



<a name="175907113"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907113" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907113">(Sep 17 2019 at 13:43)</a>:</h4>
<p>but that still requires choosing the default mode and then explicitly going from arm to thumb</p>



<a name="175907117"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907117" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Hanna Kruppe <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907117">(Sep 17 2019 at 13:43)</a>:</h4>
<p>thumb mode doesn't cause abi mismatches tho</p>



<a name="175907184"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907184" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907184">(Sep 17 2019 at 13:44)</a>:</h4>
<p>no, but it won't do what the user wants</p>



<a name="175907213"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907213" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907213">(Sep 17 2019 at 13:44)</a>:</h4>
<p>e.g. it won't change the mode for the code in the whole binary</p>



<a name="175907273"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907273" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Hanna Kruppe <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907273">(Sep 17 2019 at 13:45)</a>:</h4>
<p>Ok, sure</p>



<a name="175907279"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907279" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Hanna Kruppe <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907279">(Sep 17 2019 at 13:45)</a>:</h4>
<p>Now where does that leave us</p>



<a name="175907284"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907284" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907284">(Sep 17 2019 at 13:45)</a>:</h4>
<p>once cargo supports compiling libstd, any RUSTFLAG should cause a recompilation</p>



<a name="175907304"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907304" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907304">(Sep 17 2019 at 13:45)</a>:</h4>
<p>and at that point we maybe can just forbid linking crates with mismatching target features</p>



<a name="175907320"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907320" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907320">(Sep 17 2019 at 13:45)</a>:</h4>
<p>the question is whether it is worth it to do something else in the meantime</p>



<a name="175907429"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907429" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907429">(Sep 17 2019 at 13:46)</a>:</h4>
<p>one can trigger all these issues without <code>-C target-feature</code>, e.g., choose a <code>x86</code> target without SSE, and call a <code>#[target_feature(enable = "sse")]</code> function</p>



<a name="175907523"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907523" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907523">(Sep 17 2019 at 13:47)</a>:</h4>
<p>so forbidding target features per target, or doing link time checking won't catch all unsoundness</p>



<a name="175907557"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907557" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907557">(Sep 17 2019 at 13:47)</a>:</h4>
<p>the proper fix would be to detect those incompatibilities on a per function basis, and use different call ABIs</p>



<a name="175907670"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907670" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907670">(Sep 17 2019 at 13:48)</a>:</h4>
<p>the float* change is a one liner, I don't know how hard it would be to track target features on call ABIs</p>



<a name="175907927"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907927" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Hanna Kruppe <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907927">(Sep 17 2019 at 13:51)</a>:</h4>
<p>The float change is a one liner but one which most likely adversely impacts the performance of the vast, vast majority of code which doesn't have any problem</p>



<a name="175907951"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175907951" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Hanna Kruppe <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175907951">(Sep 17 2019 at 13:52)</a>:</h4>
<p>That the alternatives are harder doesn't make it good</p>



<a name="175908010"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175908010" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175908010">(Sep 17 2019 at 13:52)</a>:</h4>
<p>true</p>



<a name="175908904"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175908904" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175908904">(Sep 17 2019 at 14:02)</a>:</h4>
<p>i can't estimate what the impact of the change is for Rust</p>



<a name="175908956"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175908956" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175908956">(Sep 17 2019 at 14:03)</a>:</h4>
<p>every function call using floats that's not inlined would pay for a stack spill</p>



<a name="175910560"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175910560" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175910560">(Sep 17 2019 at 14:18)</a>:</h4>
<p><span class="user-mention" data-user-id="119009">@eddyb</span> we'd probably need to change this here: <a href="https://github.com/rust-lang/rust/blob/master/src/librustc_target/spec/abi.rs#L7" target="_blank" title="https://github.com/rust-lang/rust/blob/master/src/librustc_target/spec/abi.rs#L7">https://github.com/rust-lang/rust/blob/master/src/librustc_target/spec/abi.rs#L7</a></p>



<a name="175910570"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175910570" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175910570">(Sep 17 2019 at 14:18)</a>:</h4>
<p>rename <code>Abi</code> to <code>AbiKind</code></p>



<a name="175910587"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175910587" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175910587">(Sep 17 2019 at 14:18)</a>:</h4>
<p>and add a <code>struct Abi(AbiKind, TargetFeatures);</code> type instead</p>



<a name="175910663"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175910663" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175910663">(Sep 17 2019 at 14:19)</a>:</h4>
<p>at some point we'd need to set the TargetFeatures for each function on its ABI, by using the module and the <code>#[target_feature]</code> attributes</p>



<a name="175910690"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175910690" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175910690">(Sep 17 2019 at 14:19)</a>:</h4>
<p>I think we already do that somewhere</p>



<a name="175910744"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175910744" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175910744">(Sep 17 2019 at 14:20)</a>:</h4>
<p>but we'd need to make those part of the ABI</p>



<a name="175910785"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175910785" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175910785">(Sep 17 2019 at 14:20)</a>:</h4>
<p>And then when calling a function we'd need to generate code depending on the target features of the caller and callee</p>



<a name="175985499"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175985499" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175985499">(Sep 18 2019 at 09:13)</a>:</h4>
<blockquote>
<p>but that would be a quick fix for a couple of soundness bugs</p>
</blockquote>
<p>any references?</p>



<a name="175985615"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/131828-t-compiler/topic/change%20Rust%3A%3AScalar%20ABI%20to%20pass%20Floats%20by%20memory/near/175985615" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> gnzlbg <a href="https://rust-lang.github.io/zulip_archive/stream/131828-t-compiler/topic/change.20Rust.3A.3AScalar.20ABI.20to.20pass.20Floats.20by.20memory.html#175985615">(Sep 18 2019 at 09:15)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/issues/63466" target="_blank" title="https://github.com/rust-lang/rust/issues/63466">https://github.com/rust-lang/rust/issues/63466</a> is one of the most recent ones</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>